﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CommonTypes.NacionalidadeTableAdapters;
using CommonTypes;
using CommonTypes.PacienteTableAdapters;

namespace SI2_TrabalhoFinal {
    public partial class PacienteEdit : Form {
        //TODO : validações de tipos
        //TODO : tratar exceções
        #region Propriedades
        public int Nif {
            get { return int.Parse(tbNif.Text); }
            set { tbNif.Text = value.ToString(); }
        }
        public int NumSegSocial {
            get { return int.Parse(tbSegSocial.Text); }
            set { tbSegSocial.Text = value.ToString(); }
        }
        public string Nome {
            get { return tbNome.Text; }
            set { tbNome.Text = value; }
        }
        public string Apelido {
            get { return tbApelido.Text; }
            set { tbApelido.Text = value; }
        }
        public DateTime DataNascimento {
            get { return DateTime.Parse(tbDataNascimento.Text); }
            set { tbDataNascimento.Text = value.ToShortDateString(); }
        }
        public string Email {
            get { return tbEmail.Text; }
            set { tbEmail.Text = value; }
        }
        public int NumBeneficiario {
            get { return int.Parse(tbNumBeneficiario.Text); }
            set { tbNumBeneficiario.Text = value.ToString(); }
        }
        public int SistemaSaudeId {
            get { return (int)cbSistemaSaude.SelectedValue; }
            set { cbSistemaSaude.SelectedValue = value.ToString(); }
        }
        public int NacionalidadeId {
            get { return (int)cbNacionalidade.SelectedValue; }
            set { cbNacionalidade.SelectedValue = value.ToString(); }
        }
        public bool Insert { get; set; }
        public new MasterForm Parent { get; set; }
        #endregion Propriedades

        #region ctor
        public PacienteEdit() {
            InitializeComponent();
        }

        public PacienteEdit(Form mdiParent, MasterForm parent)
            : this(mdiParent, parent, null, null) {
             this.Text += " - Inserir";
            this.Insert = true;
        }

        public PacienteEdit(Form mdiParent, MasterForm parent, 
            Paciente.PessoaRow pessoa, Paciente.PacienteRow paciente)
            : this() {
            this.MdiParent = mdiParent;                       
            this.Parent = parent;

            if(pessoa == null || paciente == null) return;
            this.Insert = false;
            this.Text += " - Atualizar";
            this.SistemaSaudeId = paciente.IdSistemaSaude;
            this.NumBeneficiario = paciente.NumeroBenefeciario;
            this.Nif = pessoa.Nif;
            this.Nome = pessoa.Nome;
            this.Apelido = pessoa.UltimoNome;
            this.NumSegSocial = pessoa.NumeroSS;
            this.DataNascimento = pessoa.DataNascimento;
            this.NacionalidadeId = pessoa.IdNacionalidade;
            this.Email = pessoa.IsEMailNull() ? "" : pessoa.EMail;
        }
        #endregion ctor        

        private void PacienteEdit_Load(object sender, EventArgs e) {
            cbSistemaSaude = ComboBoxHelper.FillSistemaSaude(cbSistemaSaude);
            cbNacionalidade = ComboBoxHelper.FillNacionalidade(cbNacionalidade);
        }

        private void btnGuardar_Click(object sender, EventArgs e) {
            PacienteTableAdapter adapter = new PacienteTableAdapter();
            if(this.Insert) {
                adapter.Insert(this.NumBeneficiario, this.SistemaSaudeId,
                this.Nif, this.NumSegSocial, this.Nome, this.Apelido,
                this.DataNascimento, this.NacionalidadeId, this.Email);
            }
            else {
                adapter.Update(this.NumBeneficiario, this.SistemaSaudeId,
                this.Nif, this.NumSegSocial, this.Nome, this.Apelido,
                this.DataNascimento, this.NacionalidadeId, this.Email);
            }
            this.Parent.Refresh();
            this.Close();
        }
    }
}


